SwoopSineCrackle : SimpleSynthDescriptor{
	
		
	createGuiControls{	
		this.put(\len, 			c.new(default: 0, max: 3, midiNum:8) );
		this.put(\attack, 		c.new(default: 0.05, max: 3, midiNum:9) );
		this.put(\decay, 			c.new(default: 0.05,  max: 3, midiNum:10) );
		this.put(\absPitch, 		c.new(default: 200, max:15000, min: 60,  theLog: 4) );
		this.put(\pitchSwoopStart, 		c.new(default: 1, max:20, min: 0.0001,  theLog: 4) );
		this.put(\pitchSwoopDur, 		c.new(default: 0.1, max:10, min: 0.01,  theLog: 4) );
		this.put(\crackSpeed, 		c.new(default: 70, max:1000, min: 10,  theLog: 4) );
		this.put(\crackleDecay, 		c.new(default: 0.1, max:0.5, min: 0.001) );
		
		
		
	}
	
	*loadSynth{
	
		SynthDef(
					
			this.getSynthName,
			{ 
				arg absPitch = 300, attack = 0, decay = 1, len = 0, volume, volume2, pan, pitchSwoopStart, pitchSwoopDur, crackSpeed=10, crackleDecay = 0.1, busNum;
				var env1, imp,imp2, hertz, env2, bigPitchEnv, bigAmpEnv, crackleEnv1, crackleEnv2, crackleEnv3;
				
				hertz = 0.5;
			
				imp = Impulse.kr(hertz);
				imp2 = Impulse.kr(hertz * 2);
				env1 = EnvGen.kr(Env.linen(0, 0, 3, curve: -10), imp2, 10, absPitch);
				env2 = EnvGen.kr(Env.new([0.001,0.001, 0.0001,1],[0,2,1],'linear'), imp2);
				bigPitchEnv = EnvGen.kr(Env.new([pitchSwoopStart,1],[pitchSwoopDur],'linear'), imp2);
				crackleEnv1 = EnvGen.kr(Env.perc(0,crackleDecay), LFClipNoise.kr(crackSpeed));
				crackleEnv2 = EnvGen.kr(Env.perc(0,crackleDecay), LFClipNoise.kr(crackSpeed));
				crackleEnv3 = EnvGen.kr(Env.perc(0,crackleDecay), LFClipNoise.kr(crackSpeed));
				bigAmpEnv = EnvGen.kr(Env.linen(attack, len, decay), doneAction: 2) * volume * volume2;
				
				Out.ar(busNum, 
					Pan2.ar(
						 SinOsc.ar(absPitch * bigPitchEnv, 0, 0.5) * bigAmpEnv * crackleEnv1, -1, 0.3
					)
				);
				Out.ar(busNum, 
					Pan2.ar(
						 SinOsc.ar(env1 * bigPitchEnv, 0, 0.5) * bigAmpEnv * crackleEnv2, 1, 0.3
					)
				);
				
				
				Out.ar(busNum, 
					Pan2.ar(
						 SinOsc.ar(absPitch * bigPitchEnv, 0, 0.5) * bigAmpEnv * crackleEnv3, 0, 0.3 * env2
					)
				);
				
				
			}
			
		).load(Server.default);
	
	}

}